
<!DOCTYPE html>
<html lang="en" data-figures="" class="page">
  <head>
<title>MySQL高级 | Alexzshl</title>
<meta charset="utf-8">
<meta name="generator" content="Hugo 0.80.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta property="og:locale" content="en" />

<meta property="og:type" content="article">
<meta name="description" content="Article description.">
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="">
<meta name="twitter:title" content="MySQL高级" />
<meta property="og:url" content="https://alexzshl.gitee.io/blog/post/mysql%E9%AB%98%E7%BA%A7/" />
<meta property="og:title" content="MySQL高级" />
<meta property="og:description" content="Article description." />
<meta property="og:image" content="https://alexzshl.gitee.io/blog/" />
<link rel="apple-touch-icon" sizes="180x180" href='https://alexzshl.gitee.io/blog/icons/apple-touch-icon.png'>
<link rel="icon" type="image/png" sizes="32x32" href='https://alexzshl.gitee.io/blog/icons/favicon-32x32.png'>
<link rel="manifest" href='https://alexzshl.gitee.io/blog/icons/site.webmanifest'>
<link rel="mask-icon" href='https://alexzshl.gitee.io/blog/safari-pinned-tab.svg' color="#002538">
<meta name="msapplication-TileColor" content="#002538">
<meta name="theme-color" content="#002538">

<link rel="canonical" href="https://alexzshl.gitee.io/blog/post/mysql%E9%AB%98%E7%BA%A7/">

    

    
    
    <link rel="preload" href="https://alexzshl.gitee.io/blog/css/styles.782bf96a82b3cc5b3cee4c47a42cc81321f16960a6d41fab3277c4abe047bc7ae044ea1bb7ae4d237c12baa0143e02f95969e5e8b6e68d9dcfd14158cfa244ac.css" integrity = "sha512-eCv5aoKzzFs87kxHpCzIEyHxaWCm1B&#43;rMnfEq&#43;BHvHrgROobt65NI3wSuqAUPgL5WWnl6LbmjZ3P0UFYz6JErA==" as="style" crossorigin="anonymous">
    <link rel="preload" href="https://alexzshl.gitee.io/blog/js/bundle.min.16ce52f0798f54d65cefb0a0fc9228cf99e0b73de57f8a1545fe14259265bf79ba12fe15afd2fd75d5f0bff8f416e8ca8c5c3458f87e014cbfbed8ccfdaee327.js" as="script" integrity=
    "sha512-Fs5S8HmPVNZc77Cg/JIoz5ngtz3lf4oVRf4UJZJlv3m6Ev4Vr9L9ddXwv/j0FujKjFw0WPh&#43;AUy/vtjM/a7jJw==" crossorigin="anonymous">

    
    <link rel="stylesheet" type="text/css" href="https://alexzshl.gitee.io/blog/css/styles.782bf96a82b3cc5b3cee4c47a42cc81321f16960a6d41fab3277c4abe047bc7ae044ea1bb7ae4d237c12baa0143e02f95969e5e8b6e68d9dcfd14158cfa244ac.css" integrity="sha512-eCv5aoKzzFs87kxHpCzIEyHxaWCm1B&#43;rMnfEq&#43;BHvHrgROobt65NI3wSuqAUPgL5WWnl6LbmjZ3P0UFYz6JErA==" crossorigin="anonymous">
    
  </head>
  
  
    
  
  <body data-code="100" data-lines="false" id="documentTop">

<header class="nav_header" >
  <nav class="nav">
    <a href='https://alexzshl.gitee.io/blog/' class="nav_brand nav_item">
        Alexzshl
      <div class="nav_close">
        <div>
          <svg class="icon">
  <use xlink:href="#open-menu"></use>
</svg>
          <svg class="icon">
  <use xlink:href="#closeme"></use>
</svg>
        </div>
      </div>
    </a>
    <div class='nav_body nav_body_'>
      
      
      
        

      
<div class='follow'>
<div class="color_mode">
  <input type="checkbox" class="color_choice" id="mode">
</div>

</div>

    </div>
  </nav>
</header>

    <main>
  
<div class="grid-inverse wrap content">
  <article class="post_content">
    <h1 class="post_title">MySQL高级</h1><div class="post_meta">
  
    <svg class="icon">
  <use xlink:href="#calendar"></use>
</svg>
    <span class="post_date">
      Oct 6, 2020</span>
      <a href='https://alexzshl.gitee.io/blog/tags/mysql' class="post_tag button button_translucent">mysql
      </a>
</div>

    
  <div class="post_share">
    Share on:
    <a href="https://twitter.com/intent/tweet?text=MySQL%e9%ab%98%e7%ba%a7&url=https%3a%2f%2falexzshl.gitee.io%2fblog%2fpost%2fmysql%25E9%25AB%2598%25E7%25BA%25A7%2f&tw_p=tweetbutton" class="twitter" title="Share on Twitter" target="_blank" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#twitter"></use>
</svg>
    </a>
    <a href="https://www.facebook.com/sharer.php?u=https%3a%2f%2falexzshl.gitee.io%2fblog%2fpost%2fmysql%25E9%25AB%2598%25E7%25BA%25A7%2f&t=MySQL%e9%ab%98%e7%ba%a7" class="facebook" title="Share on Facebook" target="_blank" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#facebook"></use>
</svg>
    </a>
    <a href="#linkedinshare" id = "linkedinshare" class="linkedin" title="Share on LinkedIn" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#linkedin"></use>
</svg>
    </a>
    <a href="https://alexzshl.gitee.io/blog/post/mysql%E9%AB%98%E7%BA%A7/" title="Copy Link" class="link link_yank">
      <svg class="icon">
  <use xlink:href="#copy"></use>
</svg>
    </a>
  </div>

    
    
    <h2>Overview</h2>
    <nav id="TableOfContents">
  <ul>
    <li><a href="#1-mysql-的架构介绍">1. MySQL 的架构介绍</a>
      <ul>
        <li><a href="#mysql-简介">MySQL 简介</a></li>
        <li><a href="#mysql-linux-版的安装">MySQL Linux 版的安装</a></li>
        <li><a href="#mysql-逻辑架构介绍">MySQL 逻辑架构介绍</a></li>
        <li><a href="#mysql-存储引擎">MySQL 存储引擎</a></li>
      </ul>
    </li>
    <li><a href="#2-索引优化分析">2. 索引优化分析</a>
      <ul>
        <li><a href="#常见通用的-join-查询">常见通用的 Join 查询</a></li>
        <li><a href="#索引简介">索引简介</a></li>
        <li><a href="#性能分析">性能分析</a></li>
        <li><a href="#索引优化">索引优化</a></li>
      </ul>
    </li>
    <li><a href="#3-查询截取分析">3. 查询截取分析</a>
      <ul>
        <li><a href="#查询优化">查询优化</a></li>
      </ul>
    </li>
    <li><a href="#慢查询日志">慢查询日志</a>
      <ul>
        <li><a href="#批量数据脚本">批量数据脚本</a></li>
        <li><a href="#show-profile">Show Profile</a></li>
        <li><a href="#全局查询日志">全局查询日志</a></li>
      </ul>
    </li>
    <li><a href="#4-mysql-锁机制">4. MySQL 锁机制</a></li>
    <li><a href="#5-主从复制">5. 主从复制</a></li>
    <li><a href="#参考资料">参考资料</a></li>
  </ul>
</nav>
    <h2 id="1-mysql-的架构介绍">1. MySQL 的架构介绍</h2>
<h3 id="mysql-简介">MySQL 简介</h3>
<p>优化简介:</p>
<p>不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型&hellip;..</p>
<h3 id="mysql-linux-版的安装">MySQL Linux 版的安装</h3>
<p>rpm 安装 mysql</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#75715e"># 查看操作系统版本</span>
cat /etc/redhat-release

<span style="color:#75715e"># 查看系统内核版本</span>
uname -r
</code></pre></div><p>查看mysql版本: <a href="https://downloads.mysql.com/archives/community/">https://downloads.mysql.com/archives/community/</a></p>
<p>一般需要下载 server 和 client 安装包</p>
<p>或者下载 rpm bundle</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar

<span style="color:#75715e"># tar 需要解压</span>
 tar -xvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar

<span style="color:#75715e"># 解压后的文件</span>
mysql-community-client-5.7.32-1.el7.x86_64.rpm
mysql-community-common-5.7.32-1.el7.x86_64.rpm
mysql-community-devel-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.32-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.32-1.el7.x86_64.rpm
mysql-community-libs-5.7.32-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
mysql-community-server-5.7.32-1.el7.x86_64.rpm
mysql-community-test-5.7.32-1.el7.x86_64.rpm

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.32-1.el7.x86_64.rpm

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-client-5.7.32-1.el7.x86_64.rpm
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320101032722.png" alt="image-20210320101032722"></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#75715e"># 查看是否存在 mysql 进程</span>
ps aux | grep mysql

<span style="color:#75715e"># 查看旧版本MySql</span>
rpm -qa | grep mysql
rpm -qa | grep -i mysql

<span style="color:#75715e"># centos 7 自带的 mariadb 会冲突</span>
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs-xxxxxxxxxxxxxxxxxxxxx

<span style="color:#75715e"># 使用命令rpm -e --nodeps {-file-name}进行移除操作，移除的时候可能会有依赖，要注意一定的顺序</span>

<span style="color:#75715e"># 使用命令rpm -ivh {-file-name}进行安装操作</span>
<span style="color:#75715e"># 按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server</span>
<span style="color:#75715e"># 注：ivh中， i-install安装；v-verbose进度条；h-hash哈希校验</span>
rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm

<span style="color:#75715e"># 在安装 mysql-community-libs-5.7.22-1.el7.x86_64.rpm 时有可能会报错：mysql依赖错误</span>
<span style="color:#75715e"># 解决：清除yum里所有mysql依赖包</span>
rpm -qa|grep mysql
yum remove mysql-libs
<span style="color:#75715e"># 注意：有的系统可能不太一样，没有mysql-libs,而是mariadb-libs,此时要移除的则是mariadb-libs</span>
<span style="color:#75715e"># rpm -qa|grep mariadb</span>
<span style="color:#75715e"># yum remove mariadb-libs</span>
<span style="color:#75715e"># 清除完yum里所有mysql的依赖包后，再次安装mysql组件就不会报错了</span>

<span style="color:#75715e"># 某些阿里云ecs可能没有安装mysql需要的依赖 libiao</span>
<span style="color:#75715e"># 可以通过 rpm -qa|grep libaio 查看是否安装了 libiao</span>
<span style="color:#75715e"># yum -y install libaio</span>

<span style="color:#75715e"># 设置密码</span>
mysqladmin -u root password <span style="color:#e6db74">&#39;root&#39;</span>

mysqladmin --version

ps -ef | grep mysql

<span style="color:#75715e"># 查看用户组</span>
cat /etc/passwd | grep mysql
cat /etc/group | grep mysql

<span style="color:#75715e"># 启动服务</span>
service mysql start
ps -ef | grep mysql

service mysql stop
service mysql restart

<span style="color:#75715e"># 查看开机时间最长的服务</span>
top

<span style="color:#75715e"># 开机启动 / 自启动服务</span>
chkconfig mysql on
chkconfig --list | grep mysql

<span style="color:#75715e"># 查看自启动服务</span>
ntsysv

<span style="color:#75715e"># 连接mysql, 初始安装无密码时</span>
mysql

<span style="color:#75715e"># 修改密码</span>
mysqladmin -u root password root
mysqladmin -u root password <span style="color:#ae81ff">123456</span>
mysqladmin -u root password <span style="color:#ae81ff">123</span>

<span style="color:#75715e"># 连接mysql</span>
mysql -u root -p
<span style="color:#75715e"># 输入密码</span>

<span style="color:#75715e"># 查看mysql安装位置</span>
cd /var/lib/mysql/ 
ls -l


</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320105706347.png" alt="image-20210320105706347"></p>
<p>默认的客户端和服务都用了 latin1, 中文会乱码</p>
<p>修改配置文件:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ini" data-lang="ini"><span style="color:#66d9ef">[msyqld]</span>
<span style="color:#a6e22e">character_set_server</span><span style="color:#f92672">=</span><span style="color:#e6db74">utf8</span>
<span style="color:#a6e22e">character_set_client</span><span style="color:#f92672">=</span><span style="color:#e6db74">utf8</span>
<span style="color:#a6e22e">collation-server</span><span style="color:#f92672">=</span><span style="color:#e6db74">utf8_general_ci</span>

<span style="color:#66d9ef">[mysql]</span>
<span style="color:#a6e22e">default-character-set</span><span style="color:#f92672">=</span><span style="color:#e6db74">utf8</span>

<span style="color:#66d9ef">[client]</span>
<span style="color:#a6e22e">default-character-set</span><span style="color:#f92672">=</span><span style="color:#e6db74">utf8</span>
</code></pre></div><div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">service mysql stop
service mysql start
</code></pre></div><p>修改配置文件影响的是以后新建的database的默认字符集, 对于之前建立的数据库无效, 需要单独修改字符集. 实测以上配置对于新建数据库的字符集似乎无效</p>
<p>疑问: 到底哪个文件才是 mysql5.7 的配置文件? 似乎是<code>vim /etc/mysql/mysql.conf.d/mysqld.cnf</code></p>
<p>命令方式:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#75715e"># SET character_set_client = utf8mb4 ;
</span><span style="color:#75715e"># SET character_set_connection = utf8mb4 ;
</span><span style="color:#75715e"></span><span style="color:#66d9ef">SET</span> character_set_database <span style="color:#f92672">=</span> utf8 ;
<span style="color:#75715e"># SET character_set_results = utf8mb4 ;
</span><span style="color:#75715e"></span><span style="color:#66d9ef">SET</span> character_set_server <span style="color:#f92672">=</span> utf8 ;
<span style="color:#66d9ef">SET</span> collation_connection <span style="color:#f92672">=</span> utf8_general_ci ;
<span style="color:#66d9ef">SET</span> collation_database <span style="color:#f92672">=</span> utf8_general_ci ;
<span style="color:#66d9ef">SET</span> collation_server <span style="color:#f92672">=</span> utf8_general_ci ;
</code></pre></div><p>主要配置文件:</p>
<p>二进制日志 log-bin 主从复制</p>
<p>错误日志 log-error 默认是关闭的, 记录严重的警告和错误信息, 启动和关闭的详细信息</p>
<p>查询日志 log 默认关闭, 记录查询的sql语句, 开启会降低性能</p>
<p>数据文件 data -&gt; frm 存放表结构 myd 存放数据文件 myi 存放表索引</p>
<p>配置文件: windows my.ini ; linux /etc/my.cnf</p>
<h3 id="mysql-逻辑架构介绍">MySQL 逻辑架构介绍</h3>
<ol>
<li>
<p>连接层</p>
</li>
<li>
<p>服务层</p>
</li>
<li>
<p>引擎层</p>
</li>
<li>
<p>存储层</p>
</li>
</ol>
<p><img src="https://gitee.com/alexzshl-picbed-01/picbed/raw/master/images/v2-6befca3965d5a0facc45684bb2a47948_720w.jpg" alt="img"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320114219137.png" alt="image-20210320114219137"></p>
<p>mysql 查询过程</p>
<p><img src="https://gitee.com/alexzshl-picbed-01/picbed/raw/master/images/v2-3158800935bdbd30a57c2263ac8b5eb4_r.jpg" alt="img"></p>
<h3 id="mysql-存储引擎">MySQL 存储引擎</h3>
<p>存储引擎</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">show</span> engines;

<span style="color:#66d9ef">show</span> variables <span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;%storage_engine%&#39;</span>;
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320131344676.png" alt="image-20210320131344676"></p>
<h2 id="2-索引优化分析">2. 索引优化分析</h2>
<p>问题:</p>
<ul>
<li>性能下降 SQL 慢</li>
<li>执行时间长
<ul>
<li>查询语句写的烂</li>
<li>索引失效</li>
<li>关联查询太多join(设计缺陷或者不得已的需求)</li>
<li>服务器调优及各个参数设置(缓冲, 线程数等)</li>
</ul>
</li>
<li>等待时间长</li>
</ul>
<h3 id="常见通用的-join-查询">常见通用的 Join 查询</h3>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320132638131.png" alt="image-20210320132638131"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320132819801.png" alt="image-20210320132819801"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320133414415.png" alt="image-20210320133414415"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320133455814.png" alt="image-20210320133455814"></p>
<h3 id="索引简介">索引简介</h3>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320134029108.png" alt="image-20210320134029108"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320134041821.png" alt="image-20210320134041821"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320135811312.png" alt="image-20210320135811312"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320140325057.png" alt="image-20210320140325057"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320140525943.png" alt="image-20210320140525943"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320140835557.png" alt="image-20210320140835557"></p>
<p>索引分类:</p>
<ul>
<li>
<p>单值索引</p>
</li>
<li>
<p>唯一索引</p>
</li>
<li>
<p>复合索引</p>
</li>
</ul>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320141053798.png" alt="image-20210320141053798"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320141339935.png" alt="image-20210320141339935"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320141417933.png" alt="image-20210320141417933"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320141532000.png" alt="image-20210320141532000"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320142142491.png" alt="image-20210320142142491"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320142401925.png" alt="image-20210320142401925"></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">show</span> <span style="color:#66d9ef">index</span> <span style="color:#66d9ef">from</span> employees;

<span style="color:#66d9ef">create</span> <span style="color:#66d9ef">index</span> idx_user_name <span style="color:#66d9ef">on</span> <span style="color:#66d9ef">user</span>(name);

<span style="color:#66d9ef">create</span> <span style="color:#66d9ef">index</span> idx_user_nameEmail <span style="color:#66d9ef">on</span> <span style="color:#66d9ef">user</span>(name, email);
</code></pre></div><p>index 会影响到 where 和 order by</p>
<h3 id="性能分析">性能分析</h3>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320143430196.png" alt="image-20210320143430196"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320143452770.png" alt="image-20210320143452770"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320143526565.png" alt="image-20210320143526565"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320143831417.png" alt="image-20210320143831417"></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">explain</span> <span style="color:#f92672">&lt;</span><span style="color:#66d9ef">sql</span><span style="color:#f92672">&gt;</span>
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320144026106.png" alt="image-20210320144026106"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320145041684.png" alt="image-20210320145041684"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320145051573.png" alt="image-20210320145051573"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320145154320.png" alt="image-20210320145154320"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320150043874.png" alt="image-20210320150043874"></p>
<h3 id="索引优化">索引优化</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql">
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320153859162.png" alt="image-20210320153859162"></p>
<p>索引失效(如何避免)</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320154043239.png" alt="image-20210320154043239"></p>
<p>varchar 类型绝对不能不写单引号(指的是数字字符串, 例如varchar类型手机号码)</p>
<h2 id="3-查询截取分析">3. 查询截取分析</h2>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320164002338.png" alt="image-20210320164002338"></p>
<h3 id="查询优化">查询优化</h3>
<p>永远小表驱动大表</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320165527003.png" alt="image-20210320165527003"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320165615799.png" alt="image-20210320165615799"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320170333181.png" alt="image-20210320170333181"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320170344312.png" alt="image-20210320170344312"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320180849576.png" alt="image-20210320180849576"></p>
<h2 id="慢查询日志">慢查询日志</h2>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">show</span> variables <span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;%slow_query_log%&#39;</span>;
<span style="color:#66d9ef">set</span> global slow_query_log<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;

<span style="color:#66d9ef">show</span> variables <span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;%long_query_time%&#39;</span>;
<span style="color:#66d9ef">set</span> global long_query_time<span style="color:#f92672">=</span><span style="color:#ae81ff">3</span>;
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320181221264.png" alt="image-20210320181221264"></p>
<p>需要时临时开启, 不用时要关闭</p>
<p>通过命令修改参数只对当前进程有效; 重启mysql服务会失效(需要修改配置文件)</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320182256463.png" alt="image-20210320182256463"></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#75715e"># 模拟慢查询语句
</span><span style="color:#75715e"></span><span style="color:#66d9ef">select</span> <span style="color:#a6e22e">sleep</span>(<span style="color:#ae81ff">4</span>);
</code></pre></div><p>日志分析工具: mysqldumpslow</p>
<p>注意windows上是一个perl脚本, 需要安装 perl 才能使用</p>
<p>linux 上直接使用命令 mysqldumpslow 即可</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320182601601.png" alt="image-20210320182601601"></p>
<h3 id="批量数据脚本">批量数据脚本</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#75715e"># delimiter $$
</span><span style="color:#75715e"></span><span style="color:#66d9ef">create</span> function <span style="color:#a6e22e">rand_string</span>(n <span style="color:#66d9ef">int</span>) returns <span style="color:#66d9ef">varchar</span>(<span style="color:#ae81ff">255</span>)
begin
<span style="color:#66d9ef">declare</span> chars_str <span style="color:#66d9ef">varchar</span>(<span style="color:#ae81ff">100</span>) <span style="color:#66d9ef">default</span> <span style="color:#e6db74">&#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;</span>;
<span style="color:#66d9ef">declare</span> return_str <span style="color:#66d9ef">varchar</span>(<span style="color:#ae81ff">255</span>) <span style="color:#66d9ef">default</span> <span style="color:#e6db74">&#39;&#39;</span>;
<span style="color:#66d9ef">declare</span> i <span style="color:#66d9ef">int</span> <span style="color:#66d9ef">default</span> <span style="color:#ae81ff">0</span>;
<span style="color:#66d9ef">while</span> i <span style="color:#f92672">&lt;</span> n do
<span style="color:#66d9ef">set</span> return_str <span style="color:#f92672">=</span> <span style="color:#a6e22e">concat</span>(return_str, <span style="color:#a6e22e">substring</span>(chars_str, <span style="color:#a6e22e">floor</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">+</span><span style="color:#a6e22e">rand</span>()<span style="color:#f92672">*</span><span style="color:#ae81ff">52</span>), <span style="color:#ae81ff">1</span>));
<span style="color:#66d9ef">set</span> i <span style="color:#f92672">=</span> i <span style="color:#f92672">+</span> <span style="color:#ae81ff">1</span>;
end <span style="color:#66d9ef">while</span>;
<span style="color:#66d9ef">return</span> return_str;
end
<span style="color:#75715e"># $$
</span><span style="color:#75715e"></span>
<span style="color:#66d9ef">create</span> function <span style="color:#a6e22e">rand_num</span>() returns <span style="color:#66d9ef">int</span>(<span style="color:#ae81ff">5</span>)
begin
<span style="color:#66d9ef">declare</span> i <span style="color:#66d9ef">int</span> <span style="color:#66d9ef">default</span> <span style="color:#ae81ff">0</span>;
<span style="color:#66d9ef">set</span> i <span style="color:#f92672">=</span> <span style="color:#a6e22e">floor</span>(<span style="color:#ae81ff">100</span><span style="color:#f92672">+</span><span style="color:#a6e22e">rand</span>()<span style="color:#f92672">*</span><span style="color:#ae81ff">10</span>);
<span style="color:#66d9ef">return</span> i;
end

<span style="color:#66d9ef">create</span> <span style="color:#66d9ef">procedure</span> <span style="color:#a6e22e">insert_emp</span>(<span style="color:#66d9ef">in</span> sta <span style="color:#66d9ef">int</span>(<span style="color:#ae81ff">10</span>), <span style="color:#66d9ef">in</span> max_num <span style="color:#66d9ef">int</span>(<span style="color:#ae81ff">10</span>))
begin
<span style="color:#66d9ef">declare</span> i <span style="color:#66d9ef">int</span> <span style="color:#66d9ef">default</span> <span style="color:#ae81ff">0</span>;
<span style="color:#66d9ef">set</span> autocommit <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>;
<span style="color:#66d9ef">repeat</span>
<span style="color:#66d9ef">set</span> i <span style="color:#f92672">=</span> i<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>;
<span style="color:#66d9ef">insert</span> <span style="color:#66d9ef">into</span> <span style="color:#a6e22e">emp_created</span> (empno, ename, job, mgr, hiredate, sal, comm, deptno) <span style="color:#66d9ef">values</span> ((sta<span style="color:#f92672">+</span>i), <span style="color:#a6e22e">rand_string</span>(<span style="color:#ae81ff">6</span>), <span style="color:#e6db74">&#39;salesman&#39;</span>, <span style="color:#ae81ff">0001</span>, <span style="color:#a6e22e">curdate</span>(), <span style="color:#ae81ff">2000</span>, <span style="color:#ae81ff">400</span>, <span style="color:#a6e22e">rand_num</span>());
until i <span style="color:#f92672">=</span> max_num
end <span style="color:#66d9ef">repeat</span>;
commit;
end
</code></pre></div><h3 id="show-profile">Show Profile</h3>
<p>mysql 提供的可以用来分析当前会话中语句执行的资源消耗情况</p>
<p>默认情况下, 参数处于关闭状态, 保存最近15次的运行结果</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320192250252.png" alt="image-20210320192250252"></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">show</span> variables <span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;profiling&#39;</span>;

<span style="color:#66d9ef">set</span> profiling<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
<span style="color:#66d9ef">set</span> profiling<span style="color:#f92672">=</span><span style="color:#66d9ef">on</span>;

<span style="color:#66d9ef">set</span> profiling<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>;
<span style="color:#66d9ef">set</span> profiling<span style="color:#f92672">=</span>off;

<span style="color:#66d9ef">select</span> <span style="color:#ae81ff">12</span>;
<span style="color:#66d9ef">select</span> <span style="color:#a6e22e">sleep</span>(<span style="color:#ae81ff">1</span>);
<span style="color:#66d9ef">select</span> <span style="color:#a6e22e">sleep</span>(<span style="color:#ae81ff">3</span>);
<span style="color:#66d9ef">select</span> <span style="color:#a6e22e">sleep</span>(<span style="color:#ae81ff">5</span>);

<span style="color:#66d9ef">show</span> profiles;

<span style="color:#75715e"># profile 常用参数
</span><span style="color:#75715e"></span><span style="color:#66d9ef">show</span> profile cpu, block io <span style="color:#66d9ef">for</span> query <span style="color:#ae81ff">3</span>;
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320193401035.png" alt="image-20210320193401035"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320193557386.png" alt="image-20210320193557386"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320193652274.png" alt="image-20210320193652274"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320193948157.png" alt="image-20210320193948157"></p>
<h3 id="全局查询日志">全局查询日志</h3>
<p>只允许在测试环境使用, 生产环境不要使用</p>
<p>配置启用 my.cnf:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ini" data-lang="ini"><span style="color:#75715e"># 开启</span>
<span style="color:#a6e22e">general_log</span><span style="color:#f92672">=</span><span style="color:#e6db74">1</span>

<span style="color:#75715e"># 记录日志文件的路径</span>
<span style="color:#a6e22e">general_log_file</span><span style="color:#f92672">=</span><span style="color:#e6db74">/path/logfile</span>

<span style="color:#75715e"># 输出格式</span>
<span style="color:#a6e22e">log_output</span><span style="color:#f92672">=</span><span style="color:#e6db74">FILE</span>
<span style="color:#75715e"># log_output=TABLE</span>
</code></pre></div><p>命令启用:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">set</span> global general_log<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>;
<span style="color:#66d9ef">set</span> global log_output<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;TABLE&#39;</span>;

<span style="color:#75715e"># 所有执行的sql语句, 会记录到名为 mysql 的数据库的 general_log 表
</span><span style="color:#75715e"></span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> mysql.general_log;
</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320194936607.png" alt="image-20210320194936607"></p>
<h2 id="4-mysql-锁机制">4. MySQL 锁机制</h2>
<p>行锁, 表锁, 列锁</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320195008659.png" alt="image-20210320195008659"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320195029318.png" alt="image-20210320195029318"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320195102361.png" alt="image-20210320195102361"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320195142393.png" alt="image-20210320195142393"></p>
<p>新建一个表 引擎用  myisam</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320195448946.png" alt="image-20210320195448946"></p>
<p>手动演示加表锁 读锁</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">show</span> open <span style="color:#66d9ef">tables</span>;

<span style="color:#66d9ef">lock</span> <span style="color:#66d9ef">table</span> mylock <span style="color:#66d9ef">read</span>, book <span style="color:#66d9ef">write</span>;

<span style="color:#66d9ef">show</span> open <span style="color:#66d9ef">tables</span>;

<span style="color:#66d9ef">unlock</span> <span style="color:#66d9ef">tables</span>;

</code></pre></div><p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320200229114.png" alt="image-20210320200229114"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320200316470.png" alt="image-20210320200316470"></p>
<p>手动演示加写锁</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320200550679.png" alt="image-20210320200550679"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320200715006.png" alt="image-20210320200715006"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320200736787.png" alt="image-20210320200736787"></p>
<p>简而言之, 就是读锁会阻塞写但是不会阻塞读, 写锁则会把读和写都阻塞</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201022764.png" alt="image-20210320201022764"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201130428.png" alt="image-20210320201130428"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201157989.png" alt="image-20210320201157989"></p>
<p>innodb 引擎</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201524025.png" alt="image-20210320201524025"></p>
<p>事务</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201440240.png" alt="image-20210320201440240"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201701233.png" alt="image-20210320201701233"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320201836664.png" alt="image-20210320201836664"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320202751557.png" alt="image-20210320202751557"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320213148682.png" alt="image-20210320213148682"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320213356471.png" alt="image-20210320213356471"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320220428125.png" alt="image-20210320220428125"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320220455932.png" alt="image-20210320220455932"></p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320220806682.png" alt="image-20210320220806682"></p>
<p>show status like &lsquo;innodb_row_locks&rsquo;;</p>
<p><img src="https://gitee.com/alexzshl/picbed/raw/master/images/image-20210320220957314.png" alt="image-20210320220957314"></p>
<p><img src="https://gitee.com/alexzshl-picbed-01/picbed/raw/master/images/image-20210321101028832.png" alt="image-20210321101028832"></p>
<h2 id="5-主从复制">5. 主从复制</h2>
<p><img src="https://gitee.com/alexzshl-picbed-01/picbed/raw/master/images/image-20210321101224875.png" alt="image-20210321101224875"></p>
<p><img src="https://gitee.com/alexzshl-picbed-01/picbed/raw/master/images/image-20210321101249047.png" alt="image-20210321101249047"></p>
<p>主机修改配置</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ini" data-lang="ini"><span style="color:#66d9ef">[mysqld]</span>

<span style="color:#75715e"># 设置mysql的id标识</span>
<span style="color:#a6e22e">server-id</span><span style="color:#f92672">=</span><span style="color:#e6db74">1</span>

<span style="color:#75715e"># log-bin的日志文件，主从备份就是用这个日志记录来实现的</span>
<span style="color:#a6e22e">log-bin</span><span style="color:#f92672">=</span><span style="color:#e6db74">/var/lib/mysql/mysql-bin</span>
<span style="color:#a6e22e">log-err</span><span style="color:#f92672">=</span><span style="color:#e6db74">/var/lib/mysql/mysql-err</span>

<span style="color:#75715e"># 需要备份的数据库名，如果备份多个数据库，重复设置这个选项 即可</span>
<span style="color:#a6e22e">binlog-do-db</span><span style="color:#f92672">=</span><span style="color:#e6db74">test</span>

<span style="color:#75715e"># 不需要备份的数据库名，如果备份多个数据库，重复设置这 个选项即可</span>
<span style="color:#75715e"># binlog-ignore-db=mysql </span>

<span style="color:#75715e"># read-only=0</span>

<span style="color:#75715e"># 这个参数当从库又作为其他从库的主库时一定要加上，否则不会给更新的记录写到binglog里二进制文件里</span>
<span style="color:#75715e">#log-slave-updates=1</span>

<span style="color:#75715e"># 跳过错误，继续执行复制操作(可选)</span>
<span style="color:#75715e"># slave-skip-errors=1</span>
</code></pre></div><p>主机修改配置(简洁版)</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ini" data-lang="ini"><span style="color:#a6e22e">server-id</span><span style="color:#f92672">=</span><span style="color:#e6db74">1</span>
<span style="color:#a6e22e">log-bin</span><span style="color:#f92672">=</span><span style="color:#e6db74">/var/lib/mysql/mysql-bin</span>
<span style="color:#a6e22e">log-err</span><span style="color:#f92672">=</span><span style="color:#e6db74">/var/lib/mysql/mysql-err</span>
<span style="color:#a6e22e">binlog-do-db</span><span style="color:#f92672">=</span><span style="color:#e6db74">test</span>
</code></pre></div><p>命令行操作mysql, 配置帐户信息</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#75715e"># 主机添加同步专用帐户
</span><span style="color:#75715e"></span><span style="color:#66d9ef">CREATE</span> <span style="color:#66d9ef">USER</span> <span style="color:#e6db74">&#39;test01&#39;</span> <span style="color:#66d9ef">IDENTIFIED</span> <span style="color:#66d9ef">BY</span> <span style="color:#e6db74">&#39;123456&#39;</span>;
<span style="color:#75715e"># 授权
</span><span style="color:#75715e"></span><span style="color:#66d9ef">grant</span> replication slave <span style="color:#66d9ef">on</span> <span style="color:#f92672">*</span>.<span style="color:#f92672">*</span> <span style="color:#66d9ef">to</span> <span style="color:#e6db74">&#39;test01&#39;</span>;
<span style="color:#66d9ef">flush</span> <span style="color:#66d9ef">privileges</span>;

<span style="color:#75715e"># 或者直接创建并授权
</span><span style="color:#75715e"></span><span style="color:#66d9ef">grant</span> replication slave <span style="color:#66d9ef">on</span> <span style="color:#f92672">*</span>.<span style="color:#f92672">*</span> <span style="color:#66d9ef">to</span> <span style="color:#e6db74">&#39;test01&#39;</span><span style="color:#f92672">@</span><span style="color:#e6db74">&#39;%&#39;</span> <span style="color:#66d9ef">identified</span> <span style="color:#66d9ef">by</span> <span style="color:#e6db74">&#39;123456&#39;</span>;
<span style="color:#75715e"># 或者指定有权使用此帐号的客户端(从机)地址
</span><span style="color:#75715e"></span><span style="color:#66d9ef">grant</span> replication slave <span style="color:#66d9ef">on</span> <span style="color:#f92672">*</span>.<span style="color:#f92672">*</span> <span style="color:#66d9ef">to</span> <span style="color:#e6db74">&#39;test01&#39;</span><span style="color:#f92672">@</span><span style="color:#e6db74">&#39;47.115.139.117&#39;</span> <span style="color:#66d9ef">identified</span> <span style="color:#66d9ef">by</span> <span style="color:#e6db74">&#39;123456&#39;</span>;

<span style="color:#75715e"># 重启 mysql
</span><span style="color:#75715e"></span><span style="color:#66d9ef">show</span> master status;
</code></pre></div><p>从机修改配置</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-ini" data-lang="ini"><span style="color:#66d9ef">[mysqld]</span>
<span style="color:#a6e22e">server-id</span><span style="color:#f92672">=</span><span style="color:#e6db74">2</span>

<span style="color:#75715e"># 从mysql可以不用设置日志文件</span>
<span style="color:#75715e"># log-bin=/var/lib/mysql/mysql-bin</span>

<span style="color:#a6e22e">replicate_do_db</span><span style="color:#f92672">=</span><span style="color:#e6db74">test</span>
<span style="color:#75715e"># replicate_ignore_db=mysql</span>
</code></pre></div><div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-mysql" data-lang="mysql"><span style="color:#66d9ef">change</span> master <span style="color:#66d9ef">to</span> master_host<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;47.115.139.117&#39;</span>,master_user<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;test01&#39;</span>,master_password<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;123456&#39;</span>,master_port<span style="color:#f92672">=</span><span style="color:#ae81ff">3401</span>,master_log_file<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;mysql-bin.000004&#39;</span>,master_log_pos<span style="color:#f92672">=</span><span style="color:#ae81ff">488</span>;

start slave;

<span style="color:#66d9ef">show</span> slave status;
<span style="color:#75715e"># 美化显示
</span><span style="color:#75715e"></span><span style="color:#66d9ef">show</span> slave status<span style="color:#960050;background-color:#1e0010">\</span>G; <span style="color:#75715e"># navcat 似乎对此命令不支持
</span><span style="color:#75715e"></span>
<span style="color:#75715e"># 必须保证以下两条状态为yes
</span><span style="color:#75715e"># slave_io_running: Yes
</span><span style="color:#75715e"># slave_sql_running: Yes
</span><span style="color:#75715e"></span>
<span style="color:#75715e"># 如果要重新设置主从, 先停止 slave 进程
</span><span style="color:#75715e"></span>stop slave
</code></pre></div><h2 id="参考资料">参考资料</h2>
<p><a href="https://zhuanlan.zhihu.com/p/59818056">https://zhuanlan.zhihu.com/p/59818056</a></p>

    
      
    
  </article>
<aside class="sidebar">
  <section class="sidebar_inner">
    
    <h2 class="mt-4">Featured Posts</h2>
    <ul>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E7%99%BB%E5%BD%95%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/" class="nav-link">Java登录技术总结</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E5%90%8E%E7%AB%AF%E6%95%B4%E5%90%88%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD/" class="nav-link">Java后端整合微信登录功能</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/termux/" class="nav-link">Termux</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/activemq/" class="nav-link">ActiveMQ</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/bitwarden/" class="nav-link">Bitwarden</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/centos7/" class="nav-link">CentOS_7</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/docker/" class="nav-link">Docker</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/idea%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/" class="nav-link">Idea使用技巧积累</a>
      </li>
    </ul>
    <h2 class="mt-4">Recent Posts</h2>
    <ul class="flex-column">
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E7%99%BB%E5%BD%95%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/" class="nav-link">Java登录技术总结</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E5%90%8E%E7%AB%AF%E6%95%B4%E5%90%88%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD/" class="nav-link">Java后端整合微信登录功能</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/termux/" class="nav-link">Termux</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/activemq/" class="nav-link">ActiveMQ</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/bitwarden/" class="nav-link">Bitwarden</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/centos7/" class="nav-link">CentOS_7</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/docker/" class="nav-link">Docker</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/idea%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/" class="nav-link">Idea使用技巧积累</a>
      </li>
    </ul>
    <div>
      <h2 class="mt-4 taxonomy" id="categories-section">Categories</h2>
      <nav class="tags_nav">
        <a href='https://alexzshl.gitee.io/blog/categories/java/' class="post_tag button button_translucent">
          JAVA
          <span class="button_tally">12</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/linux/' class="post_tag button button_translucent">
          LINUX
          <span class="button_tally">3</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/spring/' class="post_tag button button_translucent">
          SPRING
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/tool/' class="post_tag button button_translucent">
          TOOL
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/web/' class="post_tag button button_translucent">
          WEB
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/book/' class="post_tag button button_translucent">
          BOOK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/centos/' class="post_tag button button_translucent">
          CENTOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/database/' class="post_tag button button_translucent">
          DATABASE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/devops/' class="post_tag button button_translucent">
          DEVOPS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/docker/' class="post_tag button button_translucent">
          DOCKER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/framework/' class="post_tag button button_translucent">
          FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/ide/' class="post_tag button button_translucent">
          IDE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/idea/' class="post_tag button button_translucent">
          IDEA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/internet/' class="post_tag button button_translucent">
          INTERNET
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/javascript-framework/' class="post_tag button button_translucent">
          JAVASCRIPT-FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/json/' class="post_tag button button_translucent">
          JSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/lib/' class="post_tag button button_translucent">
          LIB
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/login/' class="post_tag button button_translucent">
          LOGIN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/maven/' class="post_tag button button_translucent">
          MAVEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/messaging/' class="post_tag button button_translucent">
          MESSAGING
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/mysql/' class="post_tag button button_translucent">
          MYSQL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/orm/' class="post_tag button button_translucent">
          ORM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/security/' class="post_tag button button_translucent">
          SECURITY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springboot/' class="post_tag button button_translucent">
          SPRINGBOOT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springcloud/' class="post_tag button button_translucent">
          SPRINGCLOUD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springdata/' class="post_tag button button_translucent">
          SPRINGDATA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springmvc/' class="post_tag button button_translucent">
          SPRINGMVC
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/ssh/' class="post_tag button button_translucent">
          SSH
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/terminal/' class="post_tag button button_translucent">
          TERMINAL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/web-framework/' class="post_tag button button_translucent">
          WEB-FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        
      </nav>
    </div>
    <div>
      <h2 class="mt-4 taxonomy" id="tags-section">Tags</h2>
      <nav class="tags_nav">
        <a href='https://alexzshl.gitee.io/blog/tags/activemq/' class="post_tag button button_translucent">
          ACTIVEMQ
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/docker/' class="post_tag button button_translucent">
          DOCKER
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/elasticsearch/' class="post_tag button button_translucent">
          ELASTICSEARCH
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/git/' class="post_tag button button_translucent">
          GIT
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/login/' class="post_tag button button_translucent">
          LOGIN
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/maven/' class="post_tag button button_translucent">
          MAVEN
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/mysql/' class="post_tag button button_translucent">
          MYSQL
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/redis/' class="post_tag button button_translucent">
          REDIS
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh/' class="post_tag button button_translucent">
          SSH
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/404/' class="post_tag button button_translucent">
          404
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/aka.ms/' class="post_tag button button_translucent">
          AKA.MS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/authorized_keys/' class="post_tag button button_translucent">
          AUTHORIZED_KEYS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/bitwarden/' class="post_tag button button_translucent">
          BITWARDEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/centos/' class="post_tag button button_translucent">
          CENTOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/consul/' class="post_tag button button_translucent">
          CONSUL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/debug/' class="post_tag button button_translucent">
          DEBUG
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/design-pattern/' class="post_tag button button_translucent">
          DESIGN-PATTERN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/docker-compose/' class="post_tag button button_translucent">
          DOCKER-COMPOSE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/effective-java/' class="post_tag button button_translucent">
          EFFECTIVE-JAVA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/eureka/' class="post_tag button button_translucent">
          EUREKA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/feign/' class="post_tag button button_translucent">
          FEIGN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/fish/' class="post_tag button button_translucent">
          FISH
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/gateway/' class="post_tag button button_translucent">
          GATEWAY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/google/' class="post_tag button button_translucent">
          GOOGLE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/hibernate/' class="post_tag button button_translucent">
          HIBERNATE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/hystrix/' class="post_tag button button_translucent">
          HYSTRIX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/interface-document/' class="post_tag button button_translucent">
          INTERFACE-DOCUMENT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jackson/' class="post_tag button button_translucent">
          JACKSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jpa/' class="post_tag button button_translucent">
          JPA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/json/' class="post_tag button button_translucent">
          JSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jsr-107/' class="post_tag button button_translucent">
          JSR-107
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/keygen/' class="post_tag button button_translucent">
          KEYGEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/messaging/' class="post_tag button button_translucent">
          MESSAGING
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/microsoft/' class="post_tag button button_translucent">
          MICROSOFT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/nacos/' class="post_tag button button_translucent">
          NACOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/nginx/' class="post_tag button button_translucent">
          NGINX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/npm/' class="post_tag button button_translucent">
          NPM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/rsa/' class="post_tag button button_translucent">
          RSA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/security/' class="post_tag button button_translucent">
          SECURITY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/shell/' class="post_tag button button_translucent">
          SHELL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/springcloud-alibaba/' class="post_tag button button_translucent">
          SPRINGCLOUD-ALIBABA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/springmvc/' class="post_tag button button_translucent">
          SPRINGMVC
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-add/' class="post_tag button button_translucent">
          SSH-ADD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-agent/' class="post_tag button button_translucent">
          SSH-AGENT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-keygen/' class="post_tag button button_translucent">
          SSH-KEYGEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/stackoverflow/' class="post_tag button button_translucent">
          STACKOVERFLOW
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/swagger/' class="post_tag button button_translucent">
          SWAGGER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/task/' class="post_tag button button_translucent">
          TASK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/tencent-cloud/' class="post_tag button button_translucent">
          TENCENT-CLOUD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/termux/' class="post_tag button button_translucent">
          TERMUX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/vue.js/' class="post_tag button button_translucent">
          VUE.JS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/vue.js-2/' class="post_tag button button_translucent">
          VUE.JS-2
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/web/' class="post_tag button button_translucent">
          WEB
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/wechat/' class="post_tag button button_translucent">
          WECHAT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/weixin/' class="post_tag button button_translucent">
          WEIXIN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/yum/' class="post_tag button button_translucent">
          YUM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/zookeeper/' class="post_tag button button_translucent">
          ZOOKEEPER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/zsh/' class="post_tag button button_translucent">
          ZSH
          <span class="button_tally">1</span>
        </a>
        
        
      </nav>
    </div>
  </section>
</aside>

</div>
    </main><svg width="0" height="0" class="hidden">
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="facebook">
    <path d="M437 0H75C33.648 0 0 33.648 0 75v362c0 41.352 33.648 75 75 75h151V331h-60v-90h60v-61c0-49.629 40.371-90 90-90h91v90h-91v61h91l-15 90h-76v181h121c41.352 0 75-33.648 75-75V75c0-41.352-33.648-75-75-75zm0 0"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.001 18.001" id="twitter">
    <path d="M15.891 4.013c.808-.496 1.343-1.173 1.605-2.034a8.68 8.68 0 0 1-2.351.861c-.703-.756-1.593-1.14-2.66-1.14-1.043 0-1.924.366-2.643 1.078a3.56 3.56 0 0 0-1.076 2.605c0 .309.039.585.117.819-3.076-.105-5.622-1.381-7.628-3.837-.34.601-.51 1.213-.51 1.846 0 1.301.549 2.332 1.645 3.089-.625-.053-1.176-.211-1.645-.47 0 .929.273 1.705.82 2.388a3.623 3.623 0 0 0 2.115 1.291c-.312.08-.641.118-.979.118-.312 0-.533-.026-.664-.083.23.757.664 1.371 1.291 1.841a3.652 3.652 0 0 0 2.152.743C4.148 14.173 2.625 14.69.902 14.69c-.422 0-.721-.006-.902-.038 1.697 1.102 3.586 1.649 5.676 1.649 2.139 0 4.029-.542 5.674-1.626 1.645-1.078 2.859-2.408 3.639-3.974a10.77 10.77 0 0 0 1.172-4.892v-.468a7.788 7.788 0 0 0 1.84-1.921 8.142 8.142 0 0 1-2.11.593z"
      ></path>
  </symbol>
  <symbol aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="mail">
    <path  d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="calendar">
    <path d="M452 40h-24V0h-40v40H124V0H84v40H60C26.916 40 0 66.916 0 100v352c0 33.084 26.916 60 60 60h392c33.084 0 60-26.916 60-60V100c0-33.084-26.916-60-60-60zm20 412c0 11.028-8.972 20-20 20H60c-11.028 0-20-8.972-20-20V188h432v264zm0-304H40v-48c0-11.028 8.972-20 20-20h24v40h40V80h264v40h40V80h24c11.028 0 20 8.972 20 20v48z"></path>
    <path d="M76 230h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zM76 310h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zM76 390h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zm80-80h40v40h-40z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="github">
    <path d="M255.968 5.329C114.624 5.329 0 120.401 0 262.353c0 113.536 73.344 209.856 175.104 243.872 12.8 2.368 17.472-5.568 17.472-12.384 0-6.112-.224-22.272-.352-43.712-71.2 15.52-86.24-34.464-86.24-34.464-11.616-29.696-28.416-37.6-28.416-37.6-23.264-15.936 1.728-15.616 1.728-15.616 25.696 1.824 39.2 26.496 39.2 26.496 22.848 39.264 59.936 27.936 74.528 21.344 2.304-16.608 8.928-27.936 16.256-34.368-56.832-6.496-116.608-28.544-116.608-127.008 0-28.064 9.984-51.008 26.368-68.992-2.656-6.496-11.424-32.64 2.496-68 0 0 21.504-6.912 70.4 26.336 20.416-5.696 42.304-8.544 64.096-8.64 21.728.128 43.648 2.944 64.096 8.672 48.864-33.248 70.336-26.336 70.336-26.336 13.952 35.392 5.184 61.504 2.56 68 16.416 17.984 26.304 40.928 26.304 68.992 0 98.72-59.84 120.448-116.864 126.816 9.184 7.936 17.376 23.616 17.376 47.584 0 34.368-.32 62.08-.32 70.496 0 6.88 4.608 14.88 17.6 12.352C438.72 472.145 512 375.857 512 262.353 512 120.401 397.376 5.329 255.968 5.329z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212" id="gitlab">
    <path d="M12.3 74.7h54L43.3 3c-1-3.6-6.4-3.6-7.6 0L12.3 74.8z" />
    <path d="M12.3 74.7L.5 111c-1 3.2 0 6.8 3 8.8l101.6 74-92.5-119z"/>
    <path d="M105 193.7l-38.6-119h-54l92.7 119z"/>
    <path d="M105 193.7l38.7-119H66.4l38.7 119z"/>
    <path d="M105 193.7l38.7-119H198l-93 119z"/>
    <path d="M198 74.7l11.6 36.2c1 3 0 6.6-3 8.6l-101.5 74 93-119z"/>
    <path d="M198 74.7h-54.3L167 3c1.2-3.6 6.4-3.6 7.6 0L198 74.8z"/> 
  </symbol>
  <symbol viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" id="rss">
    <circle cx="3.429" cy="20.571" r="3.429"></circle>
    <path d="M11.429 24h4.57C15.999 15.179 8.821 8.001 0 8v4.572c6.302.001 11.429 5.126 11.429 11.428z"></path>
    <path d="M24 24C24 10.766 13.234 0 0 0v4.571c10.714 0 19.43 8.714 19.43 19.429z"></path>
  </symbol>
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="linkedin">
    <path d="M437 0H75C33.648 0 0 33.648 0 75v362c0 41.352 33.648 75 75 75h362c41.352 0 75-33.648 75-75V75c0-41.352-33.648-75-75-75zM181 406h-60V196h60zm0-240h-60v-60h60zm210 240h-60V286c0-16.54-13.46-30-30-30s-30 13.46-30 30v120h-60V196h60v11.309C286.719 202.422 296.93 196 316 196c40.691.043 75 36.547 75 79.688zm0 0"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612" id="arrow">
    <path d="M604.501 440.509L325.398 134.956c-5.331-5.357-12.423-7.627-19.386-7.27-6.989-.357-14.056 1.913-19.387 7.27L7.499 440.509c-9.999 10.024-9.999 26.298 0 36.323s26.223 10.024 36.222 0l262.293-287.164L568.28 476.832c9.999 10.024 26.222 10.024 36.221 0 9.999-10.023 9.999-26.298 0-36.323z"></path>
  </symbol>
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="carly">
    <path d="M504.971 239.029L448 182.059V84c0-46.317-37.682-84-84-84h-44c-13.255 0-24 10.745-24 24s10.745 24 24 24h44c19.851 0 36 16.149 36 36v108c0 6.365 2.529 12.47 7.029 16.971L454.059 256l-47.029 47.029A24.002 24.002 0 0 0 400 320v108c0 19.851-16.149 36-36 36h-44c-13.255 0-24 10.745-24 24s10.745 24 24 24h44c46.318 0 84-37.683 84-84v-98.059l56.971-56.971c9.372-9.372 9.372-24.568 0-33.941zM112 192V84c0-19.851 16.149-36 36-36h44c13.255 0 24-10.745 24-24S205.255 0 192 0h-44c-46.318 0-84 37.683-84 84v98.059l-56.971 56.97c-9.373 9.373-9.373 24.568 0 33.941L64 329.941V428c0 46.317 37.682 84 84 84h44c13.255 0 24-10.745 24-24s-10.745-24-24-24h-44c-19.851 0-36-16.149-36-36V320c0-6.365-2.529-12.47-7.029-16.971L57.941 256l47.029-47.029A24.002 24.002 0 0 0 112 192z"></path>
  </symbol>
  <symbol viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" id="copy">
    <path d="M23 2.75A2.75 2.75 0 0 0 20.25 0H8.75A2.75 2.75 0 0 0 6 2.75v13.5A2.75 2.75 0 0 0 8.75 19h11.5A2.75 2.75 0 0 0 23 16.25zM18.25 14.5h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5zm0-3h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5zm0-3h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5z"></path>
    <path d="M8.75 20.5a4.255 4.255 0 0 1-4.25-4.25V2.75c0-.086.02-.166.025-.25H3.75A2.752 2.752 0 0 0 1 5.25v16A2.752 2.752 0 0 0 3.75 24h12a2.752 2.752 0 0 0 2.75-2.75v-.75z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512.001 512.001" id="closeme">
    <path d="M284.286 256.002L506.143 34.144c7.811-7.811 7.811-20.475 0-28.285-7.811-7.81-20.475-7.811-28.285 0L256 227.717 34.143 5.859c-7.811-7.811-20.475-7.811-28.285 0-7.81 7.811-7.811 20.475 0 28.285l221.857 221.857L5.858 477.859c-7.811 7.811-7.811 20.475 0 28.285a19.938 19.938 0 0 0 14.143 5.857 19.94 19.94 0 0 0 14.143-5.857L256 284.287l221.857 221.857c3.905 3.905 9.024 5.857 14.143 5.857s10.237-1.952 14.143-5.857c7.811-7.811 7.811-20.475 0-28.285L284.286 256.002z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="open-menu">
    <path d="M492 236H20c-11.046 0-20 8.954-20 20s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20zm0-160H20C8.954 76 0 84.954 0 96s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20zm0 320H20c-11.046 0-20 8.954-20 20s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="instagram">
    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id=youtube>
    <path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z"/>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="stackoverflow">
    <path d="M21 27v-8h3v11H0V19h3v8h18z"></path><path d="M17.1.2L15 1.8l7.9 10.6 2.1-1.6L17.1.2zm3.7 14.7L10.6 6.4l1.7-2 10.2 8.5-1.7 2zM7.2 12.3l12 5.6 1.1-2.4-12-5.6-1.1 2.4zm-1.8 6.8l13.56 1.96.17-2.38-13.26-2.55-.47 2.97zM19 25H5v-3h14v3z"></path>
  </symbol>
</svg>

<footer class="footer">
  <div class="footer_inner wrap pale">
    <img src='https://alexzshl.gitee.io/blog/icons/apple-touch-icon.png' class="icon icon_2 transparent">
    <p>Copyright<span class="year"></span> ALEXZSHL. All Rights Reserved</p><a class="to_top" href="#documentTop">
  <svg class="icon">
  <use xlink:href="#arrow"></use>
</svg>
</a>

  </div>
</footer>

    <script type="text/javascript" src="https://alexzshl.gitee.io/blog/js/bundle.min.16ce52f0798f54d65cefb0a0fc9228cf99e0b73de57f8a1545fe14259265bf79ba12fe15afd2fd75d5f0bff8f416e8ca8c5c3458f87e014cbfbed8ccfdaee327.js" integrity="sha512-Fs5S8HmPVNZc77Cg/JIoz5ngtz3lf4oVRf4UJZJlv3m6Ev4Vr9L9ddXwv/j0FujKjFw0WPh&#43;AUy/vtjM/a7jJw==" crossorigin="anonymous"></script>
    
  </body>
</html>
